/**
 * Created by c.y on 2018-1-24
 * 文件说明: 产品详情信息添加额外信息编辑
 */

import prodData from './prodData';

/**
 * 新建产品详情里面的额外内容添加的组件
 * @param { String } name 元素的name
 * @param { Array } element 元素的内容
 * @return { Object } 元素的对象
 */
function createExtraComponent (name, element) {
    return {
        id: null,
        name: name,
        tempId: null,
        type: 3,
        isModule: 0,
        showEles: prodData.createProdDetailContentElement(element)
    };
}

/**
 * 新建产品详情里面的额外内容编辑的组件
 * @param { Object } initialProdInfo 初始化的产品信息
 * @param { Object } initialComponent 初始化的组件信息
 * @param { Number } index 组件的索引
 * @param { String} name 元素的name
 * @param { Array} element 元素的内容
 * @return { Object } 元素的对象
 */
function updateExtraComponent (initialProdInfo, initialComponent, index, name, element) {
    return {
        id: initialComponent.id,
        name: name,
        tempId: initialComponent.tempId,
        type: 3,
        isModule: initialComponent.isModule,
        showEles: prodData.updateProdDetailContentElement(initialProdInfo, index, element)
    };
}

/**
 * 编辑产品详情信息的额外增加的内容
 * @param { Object }initialProdInfo 产品的初始化的信息
 * @param { Object } updateProdInfo 产品的更新的信息
 * @param { Object }submitInfo 不包括额外增加的内容的信息
 * @return { Object } 提交信息
 */
function updateExactComponent (initialProdInfo, updateProdInfo, submitInfo) {
    // 判断初始化额外添加的内容
    let addOtherDetailLen = initialProdInfo.prodDetailInfo.components.length;
    let updateOtherDetailLen = updateProdInfo.otherDetails.length;
// 如果初始化的时候,没有添加额外内容,且在编辑的时候，添加了额外的内容的话，那么就是新建
    if (addOtherDetailLen === 5 && updateOtherDetailLen >= 1) {
        // 编辑新增的内容，直接创建新的组件
        updateProdInfo.otherDetails.forEach(function (item) {
            submitInfo.prodDetailInfo.components.push(createExtraComponent(item.title, item.content));
        });
        // 如果初始化的时候,有一个额外内容,且在编辑的时候，添加了额外的内容的话，那么就是新建
    } else if (addOtherDetailLen === 6 && updateOtherDetailLen >= 1) {
        updateProdInfo.otherDetails.forEach(function (item, index) {
            if (index === 0) {
                submitInfo.prodDetailInfo.components.push(updateExtraComponent(initialProdInfo, initialProdInfo.prodDetailInfo.components, 5, item.title, item.content));
            }
            if (index === 1) {
                submitInfo.prodDetailInfo.components.push(createExtraComponent(item.title, item.content));
            }
        });
    } else if (addOtherDetailLen === 7 && updateOtherDetailLen >= 1) {
        updateProdInfo.otherDetails.forEach(function (item, index) {
            if (index === 0) {
                submitInfo.prodDetailInfo.components.push(updateExtraComponent(initialProdInfo, initialProdInfo.prodDetailInfo.components, 6, item.title, item.content));
            }
            if (index === 1) {
                submitInfo.prodDetailInfo.components.push(updateExtraComponent(initialProdInfo, initialProdInfo.prodDetailInfo.components, 6, item.title, item.content));
            }
        });
    }
    return submitInfo;
}
export default updateExactComponent;
